package com.woniu.microchargeserver.chargemag.task;

import com.woniu.microchargeserver.chargemag.service.IRoomChargeService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**定时任务： “周期性收费项目的话，应该设置定时任务，看计费结束时间到了就设置 应收金额、应缴合计；违约天数到后，开始计算并修改“房间收费中间表”违约金”
 * @author: hejie
 * @date: 2021/2/3 12:45
 * @description:
 */
@Component
public class ScheduledTask {

    @Resource
    private IRoomChargeService roomChargeServiceImpl;

    /**
     * cron="秒 分 时 日 月 星期 年"
     * 每天的 12:45分执行定时任务
     *
     */
    @Scheduled(cron="0 57 17 * * ?")
    public void task02(){
        System.out.println("定时任务开启！！！！");

        /**
         *  每天定时任务1 sql1：结束时间到了，设置“收费项目中间表”  amount_receivable 和 total_payable 设置为项目的价格：收费表、中间表 联查
         *      条件：1.计费结束时间到了，中间表amount_receivable、total_payable其中一个为0或null
         *        2.没有支付 （即r.complete_payment_status=2）
         */
        roomChargeServiceImpl. updateReceivablePayable();

        /**
         *  每天定时任务2 sql2：
         *    1.结束时间 + 违约天数 >now()：设置“收费项目中间表”的计算违约金： 违约金率*(now-违约天数-结束时间) ：收费表、中间表 联查
         *    2.没有支付（即r.complete_payment_status=2）
         *    DATEDIFF(date1,date2)    两个日期相减函数，返回date1-date2相差的天数
         */
        roomChargeServiceImpl.updateLiquidatedDamages();

        System.out.println("定时任务结束！！！！");
    }
}
